#! /usr/bin/env python
#*  All rights reserved.
#*
#*  Redistribution and use in source and binary forms, with or without
#*  modification, are permitted provided that the following conditions
#*  are met:
#*
#*   * Redistributions of source code must retain the above copyright
#*     notice, this list of conditions and the following disclaimer.
#*   * Redistributions in binary form must reproduce the above
#*     copyright notice, this list of conditions and the following
#*     disclaimer in the documentation and/or other materials provided
#*     with the distribution.
#*   * Neither the name of the Willow Garage nor the names of its
#*     contributors may be used to endorse or promote products derived
#*     from this software without specific prior written permission.
#*
#*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#*  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#*  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
#*  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
#*  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
#*  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
#*  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
#*  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
#*  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
#*  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
#*  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#*  POSSIBILITY OF SUCH DAMAGE.
#***********************************************************

# Author: Blaise Gassend

# Forearm camera configuration

PACKAGE='gazebo_plugins'
#import roslib; roslib.load_manifest(PACKAGE)

from math import pi

from dynamic_reconfigure.msg import SensorLevels
#from dynamic_reconfigure.parameter_generator import *
from dynamic_reconfigure.parameter_generator_catkin import *

gen = ParameterGenerator()
#       Name                    Type      Reconfiguration level             Description                                                                                      Default    Min   Max
gen.add("min_ang",              double_t, SensorLevels.RECONFIGURE_STOP,    "The angle of the first range measurement. The unit depends on ~ang_radians.",                   -pi/2,     -pi, pi)
gen.add("max_ang",              double_t, SensorLevels.RECONFIGURE_STOP,    "The angle of the first range measurement. The unit depends on ~ang_radians.",                   pi/2,      -pi, pi)
gen.add("intensity",            bool_t,   SensorLevels.RECONFIGURE_STOP,    "Whether or not the hokuyo returns intensity values.",                                           False)
gen.add("cluster",              int_t,    SensorLevels.RECONFIGURE_STOP,    "The number of adjacent range measurements to cluster into a single reading",                    1,         0,   99)
gen.add("skip",                 int_t,    SensorLevels.RECONFIGURE_STOP,    "The number of scans to skip between each measured scan",                                        0,         0,    9)
gen.add("port",                 str_t,    SensorLevels.RECONFIGURE_CLOSE,   "The serial port where the hokuyo device can be found",                                          "/dev/ttyACM0")
gen.add("calibrate_time",       bool_t,   SensorLevels.RECONFIGURE_CLOSE,   "Whether the node should calibrate the hokuyo's time offset",                                    True)
gen.add("frame_id",             str_t,    SensorLevels.RECONFIGURE_RUNNING, "The frame in which laser scans will be returned",                                               "laser")
gen.add("time_offset",          double_t, SensorLevels.RECONFIGURE_RUNNING, "An offet to add to the timestamp before publication of a scan",                                 0,     -0.25, 0.25)
gen.add("allow_unsafe_settings",bool_t,   SensorLevels.RECONFIGURE_CLOSE,   "Turn this on if you wish to use the UTM-30LX with an unsafe angular range. Turning this option on may cause occasional crashes or bad data. This option is a tempory workaround that will hopefully be removed in an upcoming driver version.", False)

exit(gen.generate(PACKAGE, "hokuyo_node", "Hokuyo"))
